package se.webbzon.boltzmann.battle.round;

import se.webbzon.boltzmann.battle.group.BattleGroup;
import se.webbzon.boltzmann.battle.object.npc.BattleNPC;
import se.webbzon.oschi01.worldarea.WorldArea;

public interface BattleRoundListener {
	
	/*============================================================
	Public Methods
	============================================================*/
	
	/** This method is invoked when a round is started. **/
	public void roundStart(BattleRound battleRound);
	
	/** This method is invoked when a round is completed. **/
	public void roundComplete(BattleRound battleRound);
	
	/** This method is invoked when new group stars their turns. **/
	public void groupStart(BattleRound battleRound, BattleGroup group);
	
	/** This method is invoked when all participants in a battle groups has
	 * completed his/her turn. **/
	public void groupComplete(BattleRound battleRound, BattleGroup group);
	
	/** This method is invoked when a participant starts his/her turn. **/
	public void turnStart(BattleRound battleRound, BattleNPC participant);
	
	/** This method is invoked when a participant completes his/her turn. **/
	public void turnComplete(BattleRound battleRound, BattleNPC participant);
	
	/** This method is invoked when the battle is started. **/
	public void battleStart(BattleRound battleRound, WorldArea world);
	
	/** This method is invoked when the battle is completed. **/
	public void battleComplete(BattleRound battleRound, int factionId);

}
